package com.micro.frog.rbac.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.micro.frog.common.base.PageRes;
import com.micro.frog.common.base.Result;
import com.micro.frog.rbac.dto.MenuDTO;
import com.micro.frog.rbac.entity.MenuDO;
import com.micro.frog.rbac.vo.MenuTreeVO;
import com.micro.frog.rbac.vo.MenuVO;

import java.util.List;

/**
 * @author :  ljh
 * @date : 2018/4/2
 **/
public interface MenuService extends IService<MenuDO> {

    /**
     * 根据用户加载不同菜单
     *
     * @param userId   用户ID
     * @param userType 用户类型
     * @return 用户绑定的菜单列表
     */
    List<MenuVO> userMenus(Long userId, Integer userType);

    /**
     * 根据查询所有菜单
     *
     * @param menu 入参
     * @return 处理结果
     */
    List<MenuVO> queryList(MenuDO menu);

    /**
     * 所有菜单 带分页
     *
     * @param req 入参
     * @return 处理结果
     */
    Result<PageRes<MenuDO>> queryPage(MenuDTO req);

    /**
     * 添加菜单
     *
     * @param menu 入参
     * @return 处理结果
     */
    boolean add(MenuVO menu);

    /**
     * 删除菜单
     *
     * @param menuId 菜单ID
     * @return 处理结果
     */
    boolean delete(Long menuId);

    /**
     * 修改菜单
     *
     * @param menu 入参
     * @return 处理结果
     */
    boolean update(MenuVO menu);

    /**
     * 菜单树
     *
     * @return 数据
     */
    List<MenuTreeVO> tree();
}
